package org.vison.wonfu.framework.dao;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 持久化对象(PO)基础接口
 * 所有与数据库表映射的实体类都应实现此接口
 */
public interface IPO<ID extends Serializable> extends Serializable {

    /**
     * 获取主键ID
     *
     * @return 主键ID
     */
    ID getId();

    /**
     * 设置主键ID
     *
     * @param id 主键ID
     */
    void setId(ID id);

    /**
     * 获取创建时间
     * 用于审计：记录数据插入时间
     *
     * @return 创建时间
     */
    LocalDateTime getCreateTime();

    /**
     * 设置创建时间
     *
     * @param createTime 创建时间
     */
    void setCreateTime(LocalDateTime createTime);

    /**
     * 获取更新时间
     * 用于审计：记录数据最后更新时间
     *
     * @return 更新时间
     */
    LocalDateTime getUpdateTime();

    /**
     * 设置更新时间
     *
     * @param updateTime 更新时间
     */
    void setUpdateTime(LocalDateTime updateTime);

    /**
     * 获取删除标记
     * 用于逻辑删除：0-未删除，1-已删除
     *
     * @return 删除标记
     */
    Integer getDeleted();

    /**
     * 设置删除标记
     *
     * @param deleted 删除标记
     */
    void setDeleted(Integer deleted);
}